package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.ProductBean;
import com.project.bean.SellOrderBean;
import com.project.bean.UserBean;

import java.time.LocalDate;

/**
 * 库存商品业务接口
 */
public interface IProductService {
    /**
     * 根据输入的信息，分页查询库存情况
     * @param pageNO 页码
     * @param name 商品名称
     * @param startNum 起始数量
     * @param endNum 结束数量
     * @param unsurePrice 未定销售价（不限、未定销售价）
     * @param type 类别
     * @return  分页对象
     */
    IPage<ProductBean> findByItem(Integer pageNO, String name,
                                  Integer startNum, Integer endNum,
                                  String unsurePrice,String type);

    /**
     * 根据库存商品id查询库存商品的信息信息
     * @param productId 商品id
     * @return 库存商品对象
     */
    ProductBean findById(String productId);

    /**
     * 根据库存商品id，修改建议销售价格
     * @param productId 商品id
     * @param outPrice 建议销售价格
     */
    void update(String productId,Integer outPrice);

    /**
     *动态分页查询商品库存数量大于0且建议销售价不为null的商品
     * @param pageNO 页码
     * @param name 商品名称
     * @param type 商品类别
     * @return 分页对象
     */
    IPage<ProductBean> findByType(Integer pageNO,String name,String type);

    /**
     *入库
     * 2、完成采购信息的添加（供应商名称，采购员，采购时间）
     * 3、根据登录用户id，查询采购车集合
     * 4、将采购信息的id和购物车集合，批量添加到采购明细中。同时修改库存商品的最新采购价，累加商品库存数量。
     * 5、按登录用户的id删除采购车信息
     * @param supplierName 供应商名称
     * @param loginUser 登录用户（采购人）
     */
    void inset(String supplierName, UserBean loginUser);

    /**
     * 出库
     *2、完成销售信息添加
     * 3、按登录用户，查询销售车的集合
     * 4、按销售id、销售车集合，批量添加销售明细。同时累减库存数量
     * 5、按用户id删除销售车记录
     * @param sellOrder 要出库的订单对象
     * @param userId 用户id（销售员）
     */
    void outbound(SellOrderBean sellOrder,Integer userId);

}
